પાયથોન પાંડાઝ પિવટ ટેબલ્સથી ડેટા રીશેપિંગ શીખો. વૈશ્વિક ડેટા વિશ્લેષણ માટે સિન્ટેક્સ, અદ્યતન તકનીકો અને વ્યવહારુ ઉદાહરણોનો ઊંડાણપૂર્વક અભ્યાસ.
પાયથોન પાંડાઝ પિવટ ટેબલ્સ: ડેટા રીશેપિંગ માટે એક વ્યાપક માર્ગદર્શિકા
ડેટા એનાલિસિસની દુનિયામાં, ડેટાને સારાંશ આપવાની, એકત્રિત કરવાની અને પુનઃરચના કરવાની ક્ષમતા માત્ર એક કૌશલ્ય નથી—તે એક સુપરપાવર છે. કાચો ડેટા, તેના મૂળ સ્વરૂપમાં, ઘણીવાર વિસ્તૃત, વિગતવાર ખાતાવહી જેવો હોય છે. તે માહિતીથી સમૃદ્ધ હોય છે પરંતુ તેનું અર્થઘટન કરવું મુશ્કેલ હોય છે. અર્થપૂર્ણ આંતરદૃષ્ટિ કાઢવા માટે, આપણે આ ખાતાવહીને સંક્ષિપ્ત સારાંશમાં રૂપાંતરિત કરવાની જરૂર છે. આ તે જ છે જ્યાં પિવટ ટેબલ્સ શ્રેષ્ઠ છે, અને પાયથોન પ્રોગ્રામર્સ માટે, પાંડાઝ લાઇબ્રેરી એક શક્તિશાળી અને લવચીક સાધન પ્રદાન કરે છે: pivot_table().
આ માર્ગદર્શિકા ડેટા એનાલિસ્ટ્સ, વૈજ્ઞાનિકો અને પાયથોન ઉત્સાહીઓના વૈશ્વિક પ્રેક્ષકો માટે ડિઝાઇન કરવામાં આવી છે. અમે પાંડાઝ પિવટ ટેબલ્સના મિકેનિક્સમાં ઊંડાણપૂર્વક અભ્યાસ કરીશું, મૂળભૂત ખ્યાલોથી લઈને અદ્યતન તકનીકો સુધી આગળ વધીશું. ભલે તમે વિવિધ ખંડોમાંથી વેચાણના આંકડાઓનો સારાંશ આપી રહ્યા હોવ, પ્રદેશોમાં આબોહવા ડેટાનું વિશ્લેષણ કરી રહ્યા હોવ, અથવા વિતરિત ટીમ માટે પ્રોજેક્ટ મેટ્રિક્સ ટ્રૅક કરી રહ્યા હોવ, પિવટ ટેબલ્સમાં નિપુણતા મેળવવાથી તમે ડેટા એક્સપ્લોરેશનનો સંપર્ક કેવી રીતે કરો છો તે મૂળભૂત રીતે બદલાઈ જશે.
પિવટ ટેબલ બરાબર શું છે?
જો તમે ક્યારેય Microsoft Excel અથવા Google Sheets જેવા સ્પ્રેડશીટ સોફ્ટવેરનો ઉપયોગ કર્યો હોય, તો તમે પિવટ ટેબલના ખ્યાલથી પરિચિત હશો. તે એક ઇન્ટરેક્ટિવ ટેબલ છે જે તમને મોટા ડેટાસેટમાંથી ડેટાના પસંદ કરેલા કૉલમ્સ અને પંક્તિઓને પુનઃગોઠવવા અને સારાંશ આપવા દે છે જેથી ઇચ્છિત રિપોર્ટ મેળવી શકાય.
પિવટ ટેબલ બે મુખ્ય કાર્યો કરે છે:
- એગ્રિગેશન (Aggregation): તે એક અથવા વધુ શ્રેણીઓ દ્વારા જૂથબદ્ધ સંખ્યાત્મક ડેટા માટે સારાંશ આંકડા (જેમ કે સરવાળો, સરેરાશ અથવા ગણતરી)ની ગણતરી કરે છે.
- રીશેપિંગ (Reshaping): તે ડેટાને 'લોંગ' ફોર્મેટમાંથી 'વાઇડ' ફોર્મેટમાં રૂપાંતરિત કરે છે. એક જ કૉલમમાં બધા મૂલ્યો રાખવાને બદલે, તે આઉટપુટમાં એક કૉલમમાંથી અનન્ય મૂલ્યોને નવી કૉલમ્સમાં 'પિવટ' કરે છે.
પાંડાઝ pivot_table() ફંક્શન આ શક્તિશાળી કાર્યક્ષમતાને સીધા તમારા પાયથોન ડેટા એનાલિસિસ વર્કફ્લોમાં લાવે છે, જે પુનરાવર્તિત, સ્ક્રિપ્ટેબલ અને સ્કેલેબલ ડેટા રીશેપિંગ માટે પરવાનગી આપે છે.
તમારા પર્યાવરણ અને નમૂના ડેટાને સેટ કરવું
આપણે શરૂ કરીએ તે પહેલાં, ખાતરી કરો કે તમારી પાસે પાંડાઝ લાઇબ્રેરી ઇન્સ્ટોલ કરેલી છે. જો ન હોય, તો તમે તેને પીપ (pip), પાયથોનના પેકેજ ઇન્સ્ટોલરનો ઉપયોગ કરીને ઇન્સ્ટોલ કરી શકો છો:
pip install pandas
હવે, ચાલો તેને આપણા પાયથોન સ્ક્રિપ્ટ અથવા નોટબુકમાં ઇમ્પોર્ટ કરીએ:
import pandas as pd\nimport numpy as np
વૈશ્વિક વેચાણ ડેટાસેટ બનાવવો
આપણા ઉદાહરણોને વ્યવહારુ અને વૈશ્વિક સ્તરે સુસંગત બનાવવા માટે, અમે એક મલ્ટીનેશનલ ઇ-કોમર્સ કંપની માટે વેચાણ ડેટાનું પ્રતિનિધિત્વ કરતો કૃત્રિમ ડેટાસેટ બનાવીશું. આ ડેટાસેટમાં વિવિધ પ્રદેશો, દેશો અને ઉત્પાદન શ્રેણીઓમાંથી વેચાણ વિશેની માહિતી શામેલ હશે.
\n# Create a dictionary of data\ndata = {\n 'TransactionID': range(1, 21),\n 'Date': pd.to_datetime([\n '2023-01-15', '2023-01-16', '2023-01-17', '2023-02-10', '2023-02-11',\n '2023-02-12', '2023-03-05', '2023-03-06', '2023-03-07', '2023-01-20',\n '2023-01-21', '2023-02-15', '2023-02-16', '2023-03-10', '2023-03-11',\n '2023-01-18', '2023-02-20', '2023-03-22', '2023-01-25', '2023-02-28'\n ]),\n 'Region': [\n 'North America', 'Europe', 'Asia', 'North America', 'Europe', 'Asia', 'North America', 'Europe', 'Asia', 'Europe',\n 'Asia', 'North America', 'Europe', 'Asia', 'North America', 'Asia', 'Europe', 'North America', 'Europe', 'Asia'\n ],\n 'Country': [\n 'USA', 'Germany', 'Japan', 'Canada', 'France', 'India', 'USA', 'UK', 'China', 'Germany',\n 'Japan', 'USA', 'France', 'India', 'Canada', 'China', 'UK', 'USA', 'Germany', 'India'\n ],\n 'Product_Category': [\n 'Electronics', 'Apparel', 'Electronics', 'Books', 'Apparel', 'Electronics', 'Books', 'Electronics', 'Apparel',\n 'Apparel', 'Books', 'Electronics', 'Books', 'Apparel', 'Electronics', 'Books', 'Apparel', 'Books', 'Electronics', 'Electronics'\n ],\n 'Units_Sold': [10, 5, 8, 20, 7, 12, 15, 9, 25, 6, 30, 11, 18, 22, 14, 28, 4, 16, 13, 10],\n 'Unit_Price': [1200, 50, 900, 15, 60, 1100, 18, 950, 45, 55, 12, 1300, 20, 40, 1250, 14, 65, 16, 1150, 1050]\n}\n\n# Create DataFrame\ndf = pd.DataFrame(data)\n\n# Calculate Revenue\ndf['Revenue'] = df['Units_Sold'] * df['Unit_Price']\n\n# Display the first few rows of the DataFrame\nprint(df.head())\n
આ ડેટાસેટ આપણને કેટેગોરીકલ ડેટા (પ્રદેશ, દેશ, ઉત્પાદન શ્રેણી), સંખ્યાત્મક ડેટા (વેચાયેલા યુનિટ્સ, રેવન્યુ) અને ટાઈમ-સીરીઝ ડેટા (તારીખ)ના મિશ્રણ સાથે એક મજબૂત પાયો પૂરો પાડે છે.
pivot_table() નું વિચ્છેદન
પાંડાઝ pivot_table() ફંક્શન અતિ લવચીક છે. ચાલો તેના સૌથી મહત્વપૂર્ણ પેરામીટર્સને વિગતવાર સમજીએ:
pandas.pivot_table(data, values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, margins_name='All')
- data: તમે જેને પિવટ કરવા માંગો છો તે ડેટાફ્રેમ.
- values: એકત્રિત કરવાના ડેટા ધરાવતા કૉલમ(ઓ). જો નિર્દિષ્ટ ન હોય, તો બાકીના તમામ સંખ્યાત્મક કૉલમનો ઉપયોગ કરવામાં આવશે.
- index: તે કૉલમ(ઓ) જેના અનન્ય મૂલ્યો નવા પિવટ ટેબલની પંક્તિઓ બનાવશે. આને ક્યારેક 'ગ્રુપિંગ કી' કહેવામાં આવે છે.
- columns: તે કૉલમ(ઓ) જેના અનન્ય મૂલ્યોને નવા ટેબલના કૉલમ બનાવવા માટે 'પિવટ' કરવામાં આવશે.
- aggfunc: 'મૂલ્યો' પર લાગુ કરવા માટેનું એગ્રિગેશન ફંક્શન. આ 'sum', 'mean', 'count', 'min', 'max' જેવી સ્ટ્રિંગ અથવા
np.sumજેવા ફંક્શન હોઈ શકે છે. તમે વિવિધ કૉલમ પર વિવિધ ફંક્શન્સ લાગુ કરવા માટે ફંક્શન્સની સૂચિ અથવા ડિક્શનરી પણ પસાર કરી શકો છો. ડિફોલ્ટ 'mean' છે. - fill_value: પિવટ ટેબલમાં કોઈપણ ગુમ થયેલ પરિણામો (NaNs) ને બદલવા માટેનું મૂલ્ય.
- margins: એક બુલિયન. જો
Trueપર સેટ કરેલ હોય, તો તે પંક્તિઓ અને કૉલમ્સ માટે સબટોટલ્સ (જેને ગ્રાન્ડ ટોટલ પણ કહેવાય છે) ઉમેરે છે. - margins_name: પંક્તિ/કૉલમ માટેનું નામ કે જેમાં
margins=Trueહોય ત્યારે કુલ શામેલ હોય. ડિફોલ્ટ 'All' છે.
તમારું પ્રથમ પિવટ ટેબલ: એક સરળ ઉદાહરણ
ચાલો એક સામાન્ય વ્યવસાય પ્રશ્નથી શરૂ કરીએ: "દરેક ઉત્પાદન શ્રેણી દ્વારા ઉત્પન્ન થયેલ કુલ રેવન્યુ કેટલી છે?"
આનો જવાબ આપવા માટે, આપણે જરૂર છે:
- પંક્તિઓ માટે
Product_Categoryનો ઉપયોગ કરો (index). Revenueકૉલમને એકત્રિત કરો (values).- સરવાળાને આપણા એગ્રિગેશન ફંક્શન તરીકે ઉપયોગ કરો (aggfunc).
\n# Simple pivot table to see total revenue by product category\ncategory_revenue = pd.pivot_table(df, \n values='Revenue', \n index='Product_Category', \n aggfunc='sum')\n\nprint(category_revenue)\n
આઉટપુટ:
\n Revenue\nProduct_Category \nApparel 1645\nBooks 1184\nElectronics 56850\n
તરત જ, આપણી પાસે એક સ્પષ્ટ, સંક્ષિપ્ત સારાંશ છે. કાચા, 20-પંક્તિના ટ્રાન્ઝેક્શન લોગને 3-પંક્તિના ટેબલમાં પુનઃરચિત કરવામાં આવ્યું છે જે સીધા આપણા પ્રશ્નનો જવાબ આપે છે. આ પિવટ ટેબલની મૂળભૂત શક્તિ છે.
કૉલમ ડાયમેન્શન ઉમેરવું
હવે, ચાલો આના પર વિસ્તૃત કરીએ. જો આપણે ઉત્પાદન શ્રેણી દ્વારા કુલ રેવન્યુ જોવા માંગતા હોઈએ, પરંતુ પ્રદેશ દ્વારા પણ વિભાજિત હોય તો શું? અહીં columns પેરામીટર કામમાં આવે છે.
\n# Pivot table with index and columns\nrevenue_by_category_region = pd.pivot_table(df, \n values='Revenue', \n index='Product_Category', \n columns='Region', \n aggfunc='sum')\n\nprint(revenue_by_category_region)\n
આઉટપુટ:
\nRegion Asia Europe North America\nProduct_Category \nApparel 1125.0 625.0 NaN\nBooks 336.0 360.0 488.0\nElectronics 13200.0 14550.0 29100.0\n
આ આઉટપુટ ઘણું સમૃદ્ધ છે. આપણે 'પ્રદેશ' કૉલમમાંથી અનન્ય મૂલ્યો ('Asia', 'Europe', 'North America') ને નવી કૉલમ્સમાં પિવટ કર્યા છે. હવે આપણે સરળતાથી સરખામણી કરી શકીએ છીએ કે વિવિધ ઉત્પાદન શ્રેણીઓ પ્રદેશોમાં કેવી રીતે કાર્ય કરે છે. આપણે NaN (નોટ અ નંબર) મૂલ્ય પણ જોઈએ છીએ. આ સૂચવે છે કે આપણા ડેટાસેટમાં 'ઉત્તર અમેરિકા' માટે કોઈ 'એપેરલ' વેચાણ નોંધાયું નથી. આ પોતે જ મૂલ્યવાન માહિતી છે!
અદ્યતન પિવટિંગ તકનીકો
પાયાની બાબતો શક્તિશાળી છે, પરંતુ pivot_table() ની સાચી લવચીકતા તેની અદ્યતન સુવિધાઓમાં પ્રગટ થાય છે.
fill_value સાથે ખૂટતા મૂલ્યોને હેન્ડલ કરવા
આપણા અગાઉના ટેબલમાં NaN સચોટ છે, પરંતુ રિપોર્ટિંગ અથવા વધુ ગણતરીઓ માટે, તેને શૂન્ય તરીકે પ્રદર્શિત કરવું વધુ સારું હોઈ શકે છે. fill_value પેરામીટર આને સરળ બનાવે છે.
\n# Using fill_value to replace NaN with 0\nrevenue_by_category_region_filled = pd.pivot_table(df, \n values='Revenue', \n index='Product_Category', \n columns='Region', \n aggfunc='sum', \n fill_value=0)\n\nprint(revenue_by_category_region_filled)\n
આઉટપુટ:
\nRegion Asia Europe North America\nProduct_Category \nApparel 1125 625 0\nBooks 336 360 488\nElectronics 13200 14550 29100\n
કોષ્ટક હવે વધુ સ્વચ્છ અને વાંચવામાં સરળ છે, ખાસ કરીને બિન-તકનીકી પ્રેક્ષકો માટે.
મલ્ટીપલ ઇન્ડેક્સ સાથે કામ કરવું (હાયરાર્કિકલ ઇન્ડેક્સિંગ)
જો તમારે પંક્તિઓ પર એક કરતાં વધુ શ્રેણી દ્વારા જૂથ બનાવવાની જરૂર હોય તો શું? ઉદાહરણ તરીકે, ચાલો દરેક પ્રદેશમાં Region દ્વારા અને પછી Country દ્વારા વેચાણને વિભાજીત કરીએ. આપણે index પેરામીટરને કૉલમ્સની સૂચિ પસાર કરી શકીએ છીએ.
\n# Multi-level pivot table using a list for the index\nmulti_index_pivot = pd.pivot_table(df, \n values='Revenue', \n index=['Region', 'Country'],\n aggfunc='sum',\n fill_value=0)\n\nprint(multi_index_pivot)\n
આઉટપુટ:
\n Revenue\nRegion Country \nAsia China 488\n India 1760\n Japan 10860\nEurope France 1020\n Germany 14440\n UK 1115\nNorth America Canada 17800\n USA 12058\n
પાંડાઝે પંક્તિઓ પર આપમેળે MultiIndex બનાવ્યું છે. આ હાયરાર્કિકલ માળખું તમારા ડેટામાં ઊંડાણપૂર્વક અભ્યાસ કરવા અને નેસ્ટેડ સંબંધો જોવા માટે અદ્ભુત છે. તમે હાયરાર્કિકલ કૉલમ્સ બનાવવા માટે columns પેરામીટર પર સમાન તર્ક લાગુ કરી શકો છો.
મલ્ટીપલ એગ્રિગેશન ફંક્શન્સનો ઉપયોગ કરવો
કેટલીકવાર, એક સારાંશ આંકડા પૂરતા નથી. તમે દરેક જૂથ માટે કુલ રેવન્યુ (સરવાળો) અને સરેરાશ ટ્રાન્ઝેક્શન કદ (સરેરાશ) બંને જોવા માંગી શકો છો. તમે aggfunc ને ફંક્શન્સની સૂચિ પસાર કરી શકો છો.
\n# Using multiple aggregation functions\nmulti_agg_pivot = pd.pivot_table(df, \n values='Revenue', \n index='Region', \n aggfunc=['sum', 'mean', 'count'])\n\nprint(multi_agg_pivot)\n
આઉટપુટ:
\n sum mean count\n Revenue Revenue Revenue\nRegion \nAsia 13108.000000 2184.666667 6\nEurope 16575.000000 2762.500000 6\nNorth America 29858.000000 4976.333333 6\n
આ એક જ કમાન્ડ આપણને એક વ્યાપક સારાંશ આપે છે: કુલ રેવન્યુ, પ્રતિ ટ્રાન્ઝેક્શન સરેરાશ રેવન્યુ, અને દરેક પ્રદેશ માટે ટ્રાન્ઝેક્શનની સંખ્યા. ધ્યાન આપો કે પાંડાઝ આઉટપુટને વ્યવસ્થિત રાખવા માટે કેવી રીતે હાયરાર્કિકલ કૉલમ્સ બનાવે છે.
વિવિધ મૂલ્યો પર વિવિધ કાર્યો લાગુ કરવા
તમે વધુ દાણાદાર બની શકો છો. કલ્પના કરો કે તમે Revenue નો સરવાળો જોવા માંગો છો પરંતુ Units_Sold ની સરેરાશ જોવા માંગો છો. તમે aggfunc ને એક ડિક્શનરી પસાર કરી શકો છો જ્યાં કી કૉલમના નામો ('values') છે અને મૂલ્યો ઇચ્છિત એગ્રિગેશન ફંક્શન્સ છે.
\n# Different aggregations for different values\ndict_agg_pivot = pd.pivot_table(df, \n index='Region', \n values=['Revenue', 'Units_Sold'],\n aggfunc={\n 'Revenue': 'sum',\n 'Units_Sold': 'mean'\n },\n fill_value=0)\n\nprint(dict_agg_pivot)\n
આઉટપુટ:
\n Revenue Units_Sold\nRegion \nAsia 13108 17.833333\nEurope 16575 8.166667\nNorth America 29858 14.333333\n
આ સ્તરનું નિયંત્રણ જ pivot_table() ને અત્યાધુનિક ડેટા એનાલિસિસ માટેનું પ્રીમિયર ટૂલ બનાવે છે.
margins સાથે ગ્રાન્ડ ટોટલ્સની ગણતરી કરવી
રિપોર્ટિંગ હેતુઓ માટે, પંક્તિ અને કૉલમ ટોટલ હોવું ઘણીવાર આવશ્યક છે. margins=True આર્ગ્યુમેન્ટ શૂન્ય વધારાના પ્રયત્ન સાથે આ પ્રદાન કરે છે.
\n# Adding totals with margins=True\nrevenue_with_margins = pd.pivot_table(df, \n values='Revenue', \n index='Product_Category', \n columns='Region', \n aggfunc='sum', \n fill_value=0,\n margins=True,\n margins_name='Grand Total') # Custom name for totals\n\nprint(revenue_with_margins)\n
આઉટપુટ:
\nRegion Asia Europe North America Grand Total\nProduct_Category \nApparel 1125 625 0 1750\nBooks 336 360 488 1184\nElectronics 13200 14550 29100 56850\nGrand Total 14661 15535 29588 59784\n
પાંડાઝ આપમેળે દરેક પંક્તિ (તમામ પ્રદેશોમાં ઉત્પાદન શ્રેણી દીઠ કુલ રેવન્યુ) અને દરેક કૉલમ (તમામ શ્રેણીઓમાં પ્રદેશ દીઠ કુલ રેવન્યુ) માટે સરવાળો ગણે છે, ઉપરાંત નીચે-જમણા ખૂણે તમામ ડેટા માટે એક ગ્રાન્ડ ટોટલ પણ આપે છે.
વ્યવહારુ ઉપયોગ કેસ: સમય-આધારિત વિશ્લેષણ
પિવટ ટેબલ્સ સ્થિર શ્રેણીઓ સુધી મર્યાદિત નથી. તે ટાઈમ-સીરીઝ ડેટાનું વિશ્લેષણ કરવા માટે અતિ ઉપયોગી છે. ચાલો દરેક મહિના માટે કુલ રેવન્યુ શોધીએ.
પ્રથમ, આપણે આપણા 'Date' કૉલમમાંથી મહિનો કાઢવાની જરૂર છે. આ માટે આપણે પાંડાઝમાં .dt એક્સેસરનો ઉપયોગ કરી શકીએ છીએ.
\n# Extract month from the Date column\ndf['Month'] = df['Date'].dt.month_name()\n\n# Pivot to see monthly revenue by product category\nmonthly_revenue = pd.pivot_table(df,\n values='Revenue',\n index='Month',\n columns='Product_Category',\n aggfunc='sum',\n fill_value=0)\n\n# Optional: Order the months correctly\nmonth_order = ['January', 'February', 'March']\nmonthly_revenue = monthly_revenue.reindex(month_order)\n\nprint(monthly_revenue)\n
આઉટપુટ:
\nProduct_Category Apparel Books Electronics\nMonth \nJanuary 250 360 23100\nFebruary 795 794 24250\nMarch 705 30 9500\n
આ કોષ્ટક આપણને સમય જતાં દરેક શ્રેણીના વેચાણ પ્રદર્શનનું સ્પષ્ટ દૃશ્ય આપે છે, જે આપણને સરળતાથી વલણો, મોસમીતા અથવા વિસંગતતાઓને ઓળખવા દે છે.
pivot_table() વિરુદ્ધ groupby(): શું તફાવત છે?
પાંડાઝ શીખનારાઓ માટે આ એક સામાન્ય પ્રશ્ન છે. આ બંને કાર્યો ગાઢ રીતે સંબંધિત છે, અને હકીકતમાં, pivot_table() એ groupby() ની ટોચ પર બનેલું છે.
groupby()એ વધુ સામાન્ય અને મૂળભૂત ઓપરેશન છે. તે કેટલાક માપદંડોના આધારે ડેટાને જૂથબદ્ધ કરે છે અને પછી તમને એગ્રિગેશન ફંક્શન લાગુ કરવા દે છે. પરિણામ સામાન્ય રીતે હાયરાર્કિકલ ઇન્ડેક્સ સાથે પાંડાઝ સિરીઝ અથવા ડેટાફ્રેમ હોય છે, પરંતુ તે 'લોંગ' ફોર્મેટમાં રહે છે.pivot_table()એ એક વિશિષ્ટ ટૂલ છે જે ગ્રુપ-બાય કરે છે અને પછી ડેટાને રીશેપ કરે છે. તેનો મુખ્ય હેતુ ડેટાને લોંગ ફોર્મેટમાંથી વાઇડ ફોર્મેટમાં રૂપાંતરિત કરવાનો છે, જે ઘણીવાર વધુ માનવ-વાંચનીય હોય છે.
ચાલો groupby() નો ઉપયોગ કરીને આપણા પ્રથમ ઉદાહરણને ફરીથી જોઈએ:
\n# Same result as our first pivot table, but using groupby\ncategory_revenue_groupby = df.groupby('Product_Category')['Revenue'].sum()\n\nprint(category_revenue_groupby)\n
પરિણામ એક પાંડાઝ સિરીઝ છે જે આપણા પ્રથમ પિવટ ટેબલના ડેટાફ્રેમની કાર્યાત્મક રીતે સમકક્ષ છે. જો કે, જ્યારે તમે બીજી ગ્રુપિંગ કી (જેમ કે 'પ્રદેશ') રજૂ કરો છો, ત્યારે તફાવત સ્પષ્ટ થાય છે.
\n# Grouping by two columns\ngroupby_multi = df.groupby(['Product_Category', 'Region'])['Revenue'].sum()\n\nprint(groupby_multi)\n
આઉટપુટ (મલ્ટીઇન્ડેક્સ સાથેની એક સિરીઝ):
\nProduct_Category Region \nApparel Asia 1125\n Europe 625\nBooks Asia 336\n Europe 360\n North America 488\nElectronics Asia 13200\n Europe 14550\n North America 29100\nName: Revenue, dtype: int64\n
pivot_table(index='Product_Category', columns='Region') જેવું જ 'વાઇડ' ફોર્મેટ મેળવવા માટે, તમારે groupby() પછી unstack() નો ઉપયોગ કરવો પડશે:
\n# Replicating a pivot table with groupby().unstack()\ngroupby_unstack = df.groupby(['Product_Category', 'Region'])['Revenue'].sum().unstack(fill_value=0)\n\nprint(groupby_unstack)\n
આ આપણા કૉલમ સાથેના પિવટ ટેબલ જેવું જ આઉટપુટ ઉત્પન્ન કરે છે. તેથી, તમે pivot_table() ને સામાન્ય groupby().aggregate().unstack() વર્કફ્લો માટે એક અનુકૂળ શોર્ટકટ તરીકે વિચારી શકો છો.
ક્યારે કયો ઉપયોગ કરવો?
- જ્યારે તમે માનવ-વાંચનીય, વાઇડ-ફોર્મેટ આઉટપુટ ઇચ્છતા હોવ, ખાસ કરીને રિપોર્ટિંગ અથવા ક્રોસટેબ્સ બનાવવા માટે, ત્યારે
pivot_table()નો ઉપયોગ કરો. - જ્યારે તમને વધુ લવચીકતાની જરૂર હોય, ડેટા પ્રોસેસિંગ પાઇપલાઇનમાં મધ્યવર્તી ગણતરીઓ કરી રહ્યા હોવ, અથવા જ્યારે રીશેપ કરેલું, વાઇડ ફોર્મેટ તમારો અંતિમ ધ્યેય ન હોય, ત્યારે
groupby()નો ઉપયોગ કરો.
પ્રદર્શન અને શ્રેષ્ઠ પદ્ધતિઓ
જ્યારે pivot_table() શક્તિશાળી છે, ત્યારે તેનો કાર્યક્ષમ રીતે ઉપયોગ કરવો મહત્વપૂર્ણ છે, ખાસ કરીને મોટા ડેટાસેટ્સ સાથે.
- પહેલા ફિલ્ટર કરો, પછી પિવટ કરો: જો તમારે ફક્ત તમારા ડેટાના સબસેટનું વિશ્લેષણ કરવાની જરૂર હોય (દા.ત., છેલ્લા વર્ષના વેચાણ), તો પિવટ ટેબલ લાગુ કરતાં પહેલાં ડેટાફ્રેમને ફિલ્ટર કરો. આ ફંક્શનને પ્રોસેસ કરવા પડતા ડેટાની માત્રા ઘટાડે છે.
- કેટેગોરીકલ પ્રકારોનો ઉપયોગ કરો: તમે તમારા પિવટ ટેબલ્સમાં વારંવાર ઇન્ડેક્સ અથવા કૉલમ તરીકે ઉપયોગ કરો છો તે કૉલમ્સ (જેમ કે 'Region' અથવા 'Product_Category') ને પાંડાઝમાં 'category' dtype માં રૂપાંતરિત કરો. આ મેમરીના ઉપયોગને નોંધપાત્ર રીતે ઘટાડી શકે છે અને જૂથબદ્ધ કામગીરીને ઝડપી બનાવી શકે છે.
df['Region'] = df['Region'].astype('category') - તેને વાંચી શકાય તેવું રાખો: ઘણી બધી ઇન્ડેક્સ અને કૉલમ સાથે પિવટ ટેબલ બનાવવાનું ટાળો. શક્ય હોવા છતાં, સેંકડો કૉલમ પહોળી અને હજારો પંક્તિઓ લાંબી પિવટ ટેબલ મૂળ કાચા ડેટા જેટલી જ અવાચ્ય બની શકે છે. તેનો ઉપયોગ લક્ષિત સારાંશ બનાવવા માટે કરો.
- એગ્રિગેશનને સમજો: તમારી
aggfuncની પસંદગી વિશે ધ્યાન રાખો. કિંમતો પર 'sum' નો ઉપયોગ કરવો અર્થપૂર્ણ નથી, જ્યારે 'mean' વધુ યોગ્ય હોઈ શકે છે. હંમેશા ખાતરી કરો કે તમારું એગ્રિગેશન તમે જે પ્રશ્નનો જવાબ આપવાનો પ્રયાસ કરી રહ્યા છો તેની સાથે સુસંગત છે.
નિષ્કર્ષ: આંતરદૃષ્ટિપૂર્ણ સારાંશ માટે તમારું સાધન
પાંડાઝ pivot_table() ફંક્શન કોઈપણ ડેટા એનાલિસ્ટના ટૂલકિટમાં એક અનિવાર્ય સાધન છે. તે અસ્પષ્ટ, વિગતવાર ડેટામાંથી સ્વચ્છ, આંતરદૃષ્ટિપૂર્ણ સારાંશમાં જવા માટે એક ઘોષણાત્મક, અભિવ્યક્ત અને શક્તિશાળી રીત પ્રદાન કરે છે. તેના મુખ્ય ઘટકો — values, index, columns, અને aggfunc — ને સમજીને અને તેમાં નિપુણતા મેળવીને, અને મલ્ટી-લેવલ ઇન્ડેક્સિંગ, કસ્ટમ એગ્રિગેશન્સ અને માર્જિન જેવી તેની અદ્યતન સુવિધાઓનો લાભ લઈને, તમે પાયથોન કોડની થોડીક લીટીઓ સાથે જટિલ વ્યવસાયિક પ્રશ્નોના જવાબ આપવા માટે તમારા ડેટાને રીશેપ કરી શકો છો.
આગળની વખતે જ્યારે તમે મોટા ડેટાસેટનો સામનો કરો, ત્યારે અનંત પંક્તિઓ સ્ક્રોલ કરવાની લાલચનો પ્રતિકાર કરો. તેના બદલે, તમારે કયા પ્રશ્નોના જવાબ આપવાની જરૂર છે તે વિશે વિચારો અને પિવટ ટેબલ તમારા ડેટાને કેવી રીતે રીશેપ કરી શકે છે તે છુપાયેલી વાર્તાઓને ઉજાગર કરવા માટે. હેપી પિવટિંગ!